#include "compile_run.hpp"
#include "../Comm/httplib.h"//引入第三方库
using namespace ns_compile_and_run;
using namespace httplib;


void Usage(std::string proc)
{
    std::cerr <<  "Usage: " << "\n\t" << proc << " port" << std::endl;
}
//定制用户请求，定制通信协议字段
// 编译服务随时可能被多个用户请求，必须保证传递上来的code，形成源文件名称时，要具有唯一性
int main(int argv, char *argc[])
{
    //命令行参数，指定端口号
    if (argv != 2)
    {
        Usage(argc[0]);
        return 1;
    }
    //提供的编译服务，打包形成一个网络服务
    //cpp-httplib
    Server sve;

    sve.Get("/compile", [](const Request &req, Response &res)
    {
        //测试代码
        res.set_content("hello http, 你好http", "text/plain;charset=utf-8");
    });

    sve.Post("/compile_and_run", [](const Request &req, Response &res){
        // 用户请求的服务正是我们想要的json string
        std::string in_json = req.body;
        std::string out_json;
        if (!in_json.empty())
        {
            CompileAndRun::Start(in_json, &out_json);
            res.set_content(out_json, "application/json;charset=utf-8");
        }
    });

    // sve.set_base_dir("./wwwroot"); 
    // sve.set_keep_alive_max_count(1024);
    sve.listen("0.0.0.0", atoi(argc[1])); //启动http服务

    return 0;
}